﻿//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Web.Mvc;

using ProjectBase.Core;
using ProjectBase.Core.Tools.Import;

using Survey.Common.Business;
using Survey.Entity;

namespace Survey.Common.Diagnostics
{
    [ContractClassFor(typeof(ICodeListFacade<,>))]
    internal abstract class CodeListFacade<T, TFilter> : ICodeListFacade<T, TFilter>
        where T : class, ICodeList, new()
        where TFilter : class, IFilter<int>
    {
        public T CreateNew(string code)
        {
            Contract.Requires(code.IsNotEmpty(), "ICodeListFacade<,>, method CreateNew(), requires not null nor empty argument 'string code'");
            throw new NotImplementedException();
        }
        public T CreateNew(string code, string name)
        {
            Contract.Requires(code.IsNotEmpty(), "ICodeListFacade<,>, method CreateNew(), requires not null nor empty argument 'string code'");
            throw new NotImplementedException();
        }
        public T CreateNew(string code, string name, bool isVisible)
        {
            Contract.Requires(code.IsNotEmpty(), "ICodeListFacade<,>, method CreateNew(), requires not null nor empty argument 'string code'");
            throw new NotImplementedException();
        }
        public IEnumerable<T> GetAll()
        {
            throw new NotImplementedException();
        }
        public IEnumerable<T> GetAllVisible()
        {
            throw new NotImplementedException();
        }
        public T GetByCode(String code)
        {
            Contract.Requires(code.IsNotEmpty(), "ICodeListFacade<,>, method GetByCode(), requires not null nor empty argument 'string code'");
            throw new NotImplementedException();
        }

        #region base notimplemented

        #region IEntityFacade<T,int,TFilter> Members

        public bool Import(byte[] dataSource, Action<IValueProvider> processor = null)
        {
            throw new NotImplementedException();
        }

        public bool DeleteAll(TFilter filter)
        {
            throw new NotImplementedException();
        }
        public bool CanBeEdited(T entity)
        {
            throw new NotImplementedException();
        }

        public bool CanBeDeleted(T entity)
        {
            throw new NotImplementedException();
        }
        #endregion

        #region IReadFacade<T,int,TFilter> Members

        public IObjectBinder Binder
        {
            set { throw new NotImplementedException(); }
        }

        public IEnumerable<T> Find(TFilter filter)
        {
            throw new NotImplementedException();
        }
        public bool BindFilter(TFilter filter, IValueProvider valueProvider, string prefix = null)
        {
            throw new NotImplementedException();
        }
        public bool BindFilter(TFilter filter, IValueProvider valueProvider, string prefix, IEnumerable<string> includeProperties, IEnumerable<string> excludeProperties = null)
        {
            throw new NotImplementedException();
        }

        public TFilter CreateNewFilter()
        {
            throw new NotImplementedException();
        }

        public string ValidationRulesToString(string filter = null)
        {
            throw new NotImplementedException();
        }

        #endregion

        #region IReadFacade<T,int> Members

        public T GetById(int id)
        {
            throw new NotImplementedException();
        }

        #endregion

        #region IMessagesHolder Members

        public Messages Messages
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        #endregion

        #region IWriteFacade<T,int> Members

        public event EventHandler Change
        {
            add
            {
                throw new NotImplementedException();
            }
            remove
            {
                throw new NotImplementedException();
            }
        }

        public T CreateNew()
        {
            throw new NotImplementedException();
        }

        public T Add(T entity)
        {
            throw new NotImplementedException();
        }

        public T Update(T entity)
        {
            throw new NotImplementedException();
        }

        public void Delete(T entity)
        {
            throw new NotImplementedException();
        }
        public bool BindEntity(T entity, IValueProvider valueProvider, string prefix = null)
        {
            throw new NotImplementedException();
        }
        public bool BindEntity(T entity, IValueProvider valueProvider, string prefix, IEnumerable<string> includeProperties, IEnumerable<string> excludeProperties = null)
        {
            throw new NotImplementedException();
        }

        #endregion

        public IImportProvider ImportProvider
        {
            set { throw new NotImplementedException(); }
        }
        #endregion base notimplemented
    }
}